//
//  SKProduct+Extensions.swift
//  Combine-IAP-Demo
//
//  Created by garvin on 2025/1/7.
//

import Foundation
import StoreKit

// MARK: - SKProduct 扩展
extension SKProduct {
    
    /// 本地化的价格字符串
    /// 使用产品的价格区域和货币格式化价格
    public var localizedPrice: String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = priceLocale
        
        guard let formattedPrice = formatter.string(from: price) else {
            return "\(price)"
        }
        
        return formattedPrice
    }
    
    /// 简化的产品信息描述
    /// 包含产品名称和价格
    public var displayInfo: String {
        return "\(localizedTitle) - \(localizedPrice)"
    }
    
    /// 产品的详细描述信息
    /// 包含完整的产品信息
    public var detailedInfo: String {
        return """
        产品ID: \(productIdentifier)
        名称: \(localizedTitle)
        描述: \(localizedDescription)
        价格: \(localizedPrice)
        """
    }
    
    /// 检查产品是否有效
    /// 基本的产品信息验证
    public var isValid: Bool {
        return !productIdentifier.isEmpty && 
               !localizedTitle.isEmpty && 
               price.doubleValue > 0
    }
    
    /// 价格的数值（Double类型）
    /// 便于进行价格比较和计算
    public var priceValue: Double {
        return price.doubleValue
    }
    
    /// 货币代码
    /// 例如: "USD", "CNY", "EUR" 等
    public var currencyCode: String {
        return priceLocale.currencyCode ?? "Unknown"
    }
    
    /// 货币符号
    /// 例如: "$", "¥", "€" 等  
    public var currencySymbol: String {
        return priceLocale.currencySymbol ?? ""
    }
}

// MARK: - 调试和日志支持
extension SKProduct {
    public override var description: String {
        return "SKProduct(id: \(productIdentifier), title: \(localizedTitle), price: \(localizedPrice))"
    }
    
    public override var debugDescription: String {
        return detailedInfo
    }
} 